跳到主要内容

Github 网络排查

天朝的这个网络环境,时不时就无法访问 GitHub,对于我这种靠着开源活着的程序员来说断网简直就是噩梦,这里主要积累各种无法访问 Github 的排查思路以及解决办法。

DNS 污染

细看看建立 ssh 连接的过程中发生了什么,可以使用 ssh -v 命令,-v 表示 verbose,会打出详细日志。

$ ssh -vT git@github.com
OpenSSH_9.0p1, OpenSSL 1.1.1o 3 May 2022
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to github.com [::1] port 22.
debug1: connect to address ::1 port 22: Connection refused
debug1: Connecting to github.com [127.0.0.1] port 22.
debug1: connect to address 127.0.0.1 port 22: Connection refused
ssh: connect to host github.com port 22: Connection refused

从上面的信息马上就发现了诡异的地方,连接 github.com 的地址居然是 ::1 和 127.0.0.1。前者是 IPV6 的 localhost 地址,后者是 IPV4 的 localhost 地址。

到这里问题就很明确了,是 DNS 解析出问题了,导致 github.com 域名被解析成了 localhost 的 ip 地址,就自然连不上 GitHub 了。

Windows 下执行 ipconfig /flushdns 清楚 DNS 缓存后也没用,最后修改 hosts 文件,增加一条 github.com 的域名映射搞定。

https://ping.chinaz.com/

References